<?php
namespace gi\parse;

class Context {

    /*
     * 解析的结果
     */
    public $resultstack = array();

    /**
     * 将解析的结果压入数组
     * @param $mixed
     */
    public function pushResult( $mixed ) {
        /*
         * array_push — 将一个或多个单元压入数组的末尾（入栈）
         */
        array_push( $this->resultstack, $mixed );
    }

    /**
     * 将最后的解析结果在数组中弹出
     * @return mixed
     */
    public function popResult( ) {
        /*
         * array_pop — 将数组最后一个单元弹出（出栈）
         */
        return array_pop( $this->resultstack );
    }

    /**
     * 统计和返回解析的结果数量
     * @return int
     */
    public function resultCount() {
        return count( $this->resultstack );
    }

    /**
     * 返回最后一个解析结果
     * @return mixed
     * @throws Exception
     */
    public function peekResult( ) {
        if ( empty( $this->resultstack ) ) {
            throw new Exception( "empty resultstack" );
        }
        return $this->resultstack[count( $this->resultstack ) -1 ];
    }

    /**
     * Get the stack as an array
     *
     * @return array mixed
     */
    public function resultArray() {
        return $this->resultstack;
    }

}

?>

